////公有继承
//#include <iostream>
//
//using namespace std;
//
//class Base {
//public://原始标记
//    int m_a;
//    void foo() { cout << "Base::foo()" << endl; }
//protected://原始标记
//    int m_b;
//    void bar() { cout << "Base::bar()" << endl; }
//private://原始标记
//    int m_c;
//    void hum() { cout << "Base::hum()" << endl; }
//};
////class Derived :public Base {
//class Derived :public Base {//子 m_a/foo是public,m_b/bar是protected，m_c/hum是private类对基类的成员重新标记访问控制限定符
//public:
//    void fun() {//子类内部访问基类的成员，是否可以访问，编译器查看这些成员在这些成员在基类中的原始标记
//        m_a = 10; //ok
//        Base::foo();//ok 子类的foo将基类的foo隐藏
//        m_b = 20;//ok
//        Base::bar();//ok子类的bar将基类的bar隐藏
////        m_c = 30;
//        //hum();
//    }
//private:
//    int m_d;
//};
//int main(void) {
//    Derived d;//当利用子类对象，在类外访问基类成员，能否访问，编译器查看这些成员在子类中的重新标记
//    d.m_a = 100;//ok
//    d.foo();//ok
//    //d.m_b = 200;//error
//    //d.bar();//error
//    //d.m_c = 300;//error
//    //d.human();//error
//    return 0;//error
//}